package com.koron.car.web.driver.mapper;

import com.koron.car.web.driver.bean.query.DriverQuery;
import com.koron.car.web.driver.bean.vo.DriverVO;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

public interface DriverMapper {

    /**
     * 通过ID查询单条数据
     *
     * @param id 主键
     * @return 实例对象
     */
    DriverVO queryById(String id);

    /**
     * 根据账号查询司机信息
     * @param account
     * @return
     */
    DriverVO queryByAccount(@Param("account") String account);

    /**
     * 通过实体作为筛选条件查询
     *
     * @param query 实例对象
     * @return 对象列表
     */
    List<DriverVO> queryList(DriverQuery query);

    /**
     * @param bean Driver 实例对象列表
     * @return 影响行数
     */
    int saveOrUpdate(DriverVO bean);

    /**
     * 通过主键删除数据
     *
     * @param id 主键
     * @return 影响行数
     */
    int deleteById(String id);

    /**
     * 通过主键逻辑删除数据
     *
     * @param id 主键
     * @return 影响行数
     */
    int hiddenById(String id);

    /**
     * 修改司机的审批状态
     *
     * @param driverId
     * @param state
     * @return
     */
    int updateApplyStatusById(@Param("driverId") String driverId, @Param("state") String state, @Param("updateByName") String updateByName, @Param("updateTime") Date updateTime);

    /**
     * 修改司机的工作状态
     *
     * @param driverId
     * @param state
     * @return
     */
    int updateWorkStatusById(@Param("driverId") String driverId, @Param("state") String state);

    /**
     * 根据手机号获取司机信息
     * @param phone
     * @return
     */
    DriverVO getDriverByPhone(@Param("phone") String phone);
}

